//
//  ColorInlineConstant.h
//  JiaziMall
//
//  Created by Draven on 2017/11/8.
//  Copyright © 2017年 Draven. All rights reserved.
//

#import <UIKit/UIKit.h>
#import <CommonCrypto/CommonDigest.h>
#ifndef ColorInlineConstant_h
#define ColorInlineConstant_h


UIKIT_STATIC_INLINE UIFont *NormalTextFont(CGFloat size) {
    return [UIFont fontWithName:@"PingFangSC-Regular" size:size];
}
UIKIT_STATIC_INLINE UIFont *BlodTextFont(CGFloat size) {
    return [UIFont fontWithName:@"PingFangSC-Semibold" size:size];
}
UIKIT_STATIC_INLINE UIFont *MediumTextFont(CGFloat size) {
    return [UIFont fontWithName:@"PingFangSC-Medium" size:size];
}
UIKIT_STATIC_INLINE UIFont *LightTextFont(CGFloat size) {
    return [UIFont fontWithName:@"PingFangSC-Light" size:size];
}

UIKIT_STATIC_INLINE CGRect TextRect(NSString *text,UIFont *font,CGFloat limitWidth){
    NSDictionary *options = @{ NSFontAttributeName : font };
    return [text boundingRectWithSize:CGSizeMake(limitWidth, CGFLOAT_MAX)
                                                options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
                                             attributes:options context:nil];;
}


UIKIT_STATIC_INLINE UIImage *WebImagePlaceholder(NSString *name){
    return [UIImage imageNamed:name];
}

UIKIT_STATIC_INLINE NSString *StringFromObject(id object) {
    if (object == nil || [object isEqual:[NSNull null]] || [object isEqualToString:@""]) {
        return @"";
    } else if ([object isKindOfClass:[NSString class]]) {
        return object;
    } else if ([object respondsToSelector:@selector(stringValue)]){
        return [object stringValue];
    } else {
        return [object description];
    }
}

UIKIT_STATIC_INLINE BOOL isEmpty(id aItem) {
    return aItem == nil
    || ([aItem isKindOfClass:[NSNull class]])
    || (([aItem respondsToSelector:@selector(length)])
        && ([aItem length] == 0))
    || (([aItem respondsToSelector:@selector(length)])
        && ([aItem length] == 0))
    || (([aItem respondsToSelector:@selector(count)])
        && ([aItem count] == 0));
    
}
//MD5加密
UIKIT_STATIC_INLINE NSString *MD5Encode(NSString *string) {
    const char *cStr = [string UTF8String];
    unsigned char result[CC_MD5_DIGEST_LENGTH];
    CC_MD5(cStr, (CC_LONG)strlen(cStr), result);
    return [NSString stringWithFormat:@"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
            result[0], result[1], result[2], result[3], result[4], result[5], result[6], result[7],
            result[8], result[9], result[10], result[11], result[12], result[13], result[14], result[15]];
}
//判断手机号码格式是否正确
UIKIT_STATIC_INLINE BOOL isValiMobileString(NSString *mobile)
{
    mobile = [mobile stringByReplacingOccurrencesOfString:@" " withString:@""];
    if (mobile.length != 11)
    {
        return NO;
    }else{
        /**
         * 移动号段正则表达式
         */
        NSString *CM_NUM = @"^((13[4-9])|(147)|(15[0-2,7-9])|(178)|(18[2-4,7-8]))\\d{8}|(1705)\\d{7}$";
        /**
         * 联通号段正则表达式
         */
        NSString *CU_NUM = @"^((13[0-2])|(145)|(15[5-6])|(176)|(18[5,6]))\\d{8}|(1709)\\d{7}$";
        /**
         * 电信号段正则表达式
         */
        NSString *CT_NUM = @"^((133)|(153)|(177)|(18[0,1,9]))\\d{8}$";
        NSPredicate *pred1 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM_NUM];
        BOOL isMatch1 = [pred1 evaluateWithObject:mobile];
        NSPredicate *pred2 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU_NUM];
        BOOL isMatch2 = [pred2 evaluateWithObject:mobile];
        NSPredicate *pred3 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT_NUM];
        BOOL isMatch3 = [pred3 evaluateWithObject:mobile];
        
        if (isMatch1 || isMatch2 || isMatch3) {
            return YES;
        }else{
            return NO;
        }
    }
}
//邮箱验证
UIKIT_STATIC_INLINE BOOL isValidateEmailString(NSString *email) {
    NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
    return [emailTest evaluateWithObject:email];
}


#endif /* ColorInlineConstant_h */
